// Copyright (c) MatrixFramework. All rights reserved.
// Licensed under the MIT License. See LICENSE in the project root for license information.

using System.ComponentModel.DataAnnotations;

namespace PhotoGalleryService.Photos;

/// <summary>
/// 照片上传输入参数
/// </summary>
public class PhotoUploadInput
{
    /// <summary>
    /// 文件内容
    /// </summary>
    [Required]
    public byte[] FileContent { get; set; } = Array.Empty<byte>();

    /// <summary>
    /// 文件名
    /// </summary>
    [Required]
    [StringLength(500)]
    public string FileName { get; set; } = string.Empty;

    /// <summary>
    /// MIME类型
    /// </summary>
    [Required]
    [StringLength(100)]
    public string MimeType { get; set; } = string.Empty;

    /// <summary>
    /// 照片标题
    /// </summary>
    [StringLength(500)]
    public string? Title { get; set; }

    /// <summary>
    /// 照片描述
    /// </summary>
    [StringLength(2000)]
    public string? Description { get; set; }

    /// <summary>
    /// 拍摄时间
    /// </summary>
    public DateTime? TakenAt { get; set; }

    /// <summary>
    /// 纬度
    /// </summary>
    [Range(-90, 90)]
    public double? Latitude { get; set; }

    /// <summary>
    /// 经度
    /// </summary>
    [Range(-180, 180)]
    public double? Longitude { get; set; }

    /// <summary>
    /// 位置描述
    /// </summary>
    [StringLength(500)]
    public string? Location { get; set; }

    /// <summary>
    /// 是否公开
    /// </summary>
    public bool IsPublic { get; set; }

    /// <summary>
    /// 标签（逗号分隔）
    /// </summary>
    [StringLength(1000)]
    public string? Tags { get; set; }
}